Theming for virtual collaboration

ABSTRACT

Aspects of the disclosure provide techniques that enable a communication server hosting a virtual communication session to receive theme parameters from a remote server to control the look and feel of the virtual communication session. In one example, a method includes sending a plurality of video feeds for display at a plurality of graphical user interfaces (GUIs) of client devices coupled to a communication session. The communication session enables communication among a plurality of users of the client devices. The method also includes receiving a set of parameters of a theme to modify one or more visual properties of the GUIs. The method also includes sending the set of parameters to the client devices connected to the communication session to modify visual properties of the GUIs displaying the plurality of video feeds at the plurality of client devices based on the parameters of the theme.

RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No.61/549,074, filed Oct. 19, 2011, the entire content of which isincorporated herein in its entirety.

TECHNICAL FIELD

The disclosure relates to virtual socializing over a network and, morespecifically, to configuring client interfaces used for virtualsocializing.

BACKGROUND

Multiple users of computing devices may often engage in real-time videocommunications, such as video conferencing, where the users (alsoreferred to as participants) exchange live video and audiotransmissions. In some examples, visual representations of the users maybe shared with each user engaged in real-time video communications. Eachcomputing device associated with a user may include a client thatenables the real-time video communication. In some instances, the clientmay include a graphical interface that displays the visualrepresentations of each of the users.

SUMMARY

In one example, a method includes sending, by one or more computingdevices, a plurality of video feeds for display at a plurality ofgraphical user interfaces (GUIs) of client devices coupled to acommunication session. The communication session enables communicationamong a plurality of users of the one or more computing devices, andeach of the plurality of video feeds includes at least a visualrepresentation of user participation in the communication session. Themethod also includes, receiving, by the one or more computing device, aset of parameters of a theme to modify one or more visual properties ofthe GUIs. The method also includes sending, by the one or more computingdevice, the set of parameters to the client devices coupled to thecommunication session to modify visual properties of the GUIs displayingthe plurality of video feeds at the plurality of client devices based onthe parameters of the theme.

In one example, a computer-readable storage medium includes instructionsthat, when executed, cause one or more processors to perform operationsincluding, sending a plurality of video feeds for display at a pluralityof graphical user interfaces (GUIs) of client devices coupled to acommunication session. The communication session enables communicationamong a plurality of users of the client devices, and each of theplurality of video feeds includes at least a visual representation ofuser participation in the communication session. The computer-readablestorage medium further includes instructions that, when executed, causeone or more processors to perform operations including, receiving a setof parameters of a theme to modify one or more visual properties of theGUIs. The computer-readable storage medium further includes instructionsthat, when executed, cause one or more processors to perform operationsincluding sending the set of parameters to the client devices connectedto the communication session to modify visual properties of the GUIsdisplaying the plurality of video feeds at the plurality of clientdevices based on the parameters of the theme.

In one example, a computing device includes one or more processors. Thecomputing device further includes a server module configured to send aplurality of video feeds for display at a plurality of graphical userinterfaces (GUIs) of client devices coupled to a communication session.The communication session enables communication among a plurality ofusers of the client devices, and each of the plurality of video feedsincludes at least a visual representation of user participation in thecommunication session. The computing device also includes a theme moduleconfigured to receive a set of parameters of a theme to modify one ormore visual properties of the GUIs. The server module is also configuredto send the set of parameters to the client devices connected to thecommunication session to modify visual properties of the GUIs displayingthe plurality of video feeds at the plurality of client devices based onthe parameters of the theme.

The details of one or more examples are set forth in the accompanyingdrawings and the description below. Other features, objects, andadvantages will be apparent from the description and drawings, and fromthe claims.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram illustrating an example of one or more clientdevices connected to a communication session that enables communicationamong users, in accordance with one or more aspects of the presentdisclosure.

FIG. 2 is a block diagram illustrating further details of one example ofa server device shown in FIG. 1, in accordance with one or more aspectsof the present disclosure.

FIG. 3 is a block diagram illustrating one example of a graphicaldisplay of a communication client, in accordance with one or moreaspects of the present disclosure.

FIG. 4 is a flowchart illustrating an example operation that includes aserver device that sends parameters to computing devices connected to acommunication session to modify visual properties of GUIs displayed ateach of the computing devices, in accordance with one or more aspects ofthe present disclosure.

FIG. 5 is a flow diagram illustrating an example operation that may beperformed by a computing device to send a set of parameters to computingdevices connected to a communication session to modify visual propertiesof GUIs displayed at each of the plurality of computing devices, inaccordance with one or more aspects of the present disclosure.

DETAILED DESCRIPTION

Overview

Friends, family members, or other individuals who wish to socialize orotherwise communicate may not always be in the same physical location atthe time they would like to communicate. Some individuals may rely upontelephonic, text, or other forms of communication that support limitedforms of socializing. For example, conventional forms of communicationmay support multi-way audio and/or video communication. However, someforms of communication are not sufficient to be able to give theindividuals an experience similar to actually socializing in person.Talking with someone over the phone or texting someone does not create ashared experience similar to sitting a room together watching a movie orplaying a game.

Rather than interacting together in the same physical location,techniques of this disclosure may, in various instances, provide amechanism for two or more individuals to socialize in the same virtuallocation (e.g., a virtual communication session). A virtualcommunication session is a virtual space where multiple users can engagein a conversation and/or share information. For example, the individualsparticipating in the virtual hangout may share and watch videos, playgames, participate in video, audio, or text chat, surf the web, or anycombination thereof. In other words, techniques of this disclosure mayenable the creation of a virtual hangout that may mirror the experienceof individuals hanging out in the same physical location.

Users may connect to the virtual communication session using acommunication client that displays one or more video feeds of otherusers participating in the virtual communication session. Eachcommunication client connected to the communication session may includethe same or substantially similar GUI thereby providing a common lookand feel for the virtual communication session. The communication clientmay cause an output device to display graphical elements (e.g., videofeeds) in a graphical user interface (GUI) that include one or morevisual properties. Visual properties of a GUI may include the size,position, and appearance of graphical elements included in the GUI.

Aspects of the disclosure provide techniques that enable a user toselect themes that modify visual properties of a GUI. For instance, atheme may include one or more parameters that may modify visualproperties of a GUI. By allowing users to apply themes that modifyvisual properties of the GUI, users may create and select differentconfigurations for different virtual communications sessions. Allowingusers to create and select different configurations for differentvirtual communications sessions may improve the customizability of thevisual communication session and the user experience.

Aspects of the disclosure further provide techniques that enable acommunication server hosting a virtual communication session to receivetheme parameters from a remote server to control the look and feel ofthe virtual communication session. For instance, a remote server mayinclude an application that sends parameters of a theme to an interfaceprovided by the communication server. The parameters may in turn be sentby the communication server to each of the communication clientsconnected to the session thereby causing visual properties of the GUIsdisplayed at each of the client devices to be modified concurrently. Inthis way, a common look and feel of the virtual configuration sessionmay be configured by a remote server that specifies one or more themes.

As used throughout this disclosure, headings are included to improve theclarity of the disclosure and are not used to define separate examples.In some examples, features of various examples may be combined and/orused from among multiple headings in accordance with aspects of thepresent disclosure.

Example System

FIG. 1 is a block diagram illustrating an example of one or more clientdevices connected to a communication session that enables communicationamong users, in accordance with one or more aspects of the presentdisclosure. FIG. 1 includes client devices 4 and 34, server device 20,and remote device 28. Client device 4 includes input device 9, outputdevice 10, and communication client 6, which further includescommunication module 8. Communication client 6 may further cause outputdevice 10 to display graphical user interface (GUI) 12. GUI 12 mayfurther include background 14, video feed 17, and control buttons 16A,16B. Client devices 34A, 34B are computing devices similar to clientdevice 4 and further include respective communication clients 36A, 36Bsimilar to communication client 6.

As shown in FIG. 1, server device 20 includes communication server 22,theme module 24, server module 25, and communication session 26. Remotedevice 28 includes remote application 30 and theme data store 32. Eachof client devices 4 and 34, server device 20, and remote device 28 maybe connected by communication channels 18, which in some examples may bewired or wireless communication channels capable of sending andreceiving data. One example of communication channel 18 may include aTransmission Control Protocol and/or Internet Protocol (TCP/IP) networkconnection.

Client devices 4 and 34 may be communicatively coupled to acommunication session 26 that enables communication among users ofclient devices 4 and 34, in accordance with one or more aspects of thepresent disclosure. Examples of client devices 4 and 34, may include,but are not limited to, portable or mobile devices such as mobile phones(including smart phones), laptop computers, personal digital assistants(PDAs), portable gaming devices, portable media players, televisions orsimilar such devices with one or more processors attached thereto, orembedded therein and e-book readers. Client device 4 and each of clientdevices 34 may be the same or different types of devices. For example,client device 4 and client device 34A may both be mobile phones. Inanother example, client device 4 may be a mobile phone and client device34A may be a desktop computer.

Client devices 4 and 34 may include one or more input devices 9. Inputdevice 9 may include keyboards, pointing devices, microphones, andcameras capable of recording one or more images or video. Client devices4 and 34 may also include output devices 10. Examples of output device10 may include a video graphics card, computer display, sound card, andspeakers.

Client devices 4 and 34 of FIG. 1 may include communication clients 6and 36. Communication clients 6 and 36 may provide similar or the samefunctionality. In some examples, communication clients 6 and 36 mayinclude mobile or desktop computer applications that providefunctionality described herein. Communication clients 6 and 36 mayinclude communication modules such as communication module 8 as shown incommunication client 6. Communication clients 6 and 36 may exchangeaudio, video, text, or other information with other communicationclients connected to communication session 26. Communication module 8may cause output device 10 to display GUI 12. Communication module 8 mayfurther include functionality that enables communication client 6 toconnect to communication server 22 and join one or more communicationsessions (e.g., communication session 26). Two or more client devices(e.g., client device 4 and client device 34) may join the samecommunication session 26 to enable communication among the clientdevices.

GUI 12 may include graphical elements such as background 14, video feeds17, and control buttons 16. Graphical elements may include any visuallyperceivable object that may be displayed in GUI 12. Examples ofgraphical elements may include a background image, video feed, text,control buttons, input fields, or scroll bars. In one example, inputdevice 9 may generate a visual representation of user 2. A visualrepresentation may be a still image or group of images (e.g., a video).Communication client 6 may send the visual representation tocommunication server 22, which may determine that communication clients6 and 36 are connected to communication session 26. Consequently,communication server 22 may send the visual representation of user 2 tocommunication clients 36A and 36B as video feeds. Communication clients36A and 36B may, upon receiving the visual representation, cause anoutput device of client devices 34A and 34B to display the video feeds.Similarly, client device 4 may receive visual representations of users38A and 38B, which are in turn included as video feeds 17A and 17B inGUI 12 of client device 4.

In addition to exchanging video information, the communication clientsmay exchange audio, text and other information via communication session26. For instance, microphones may capture sound at or near each ofclient devices 4 and 34, for example, voices of users 2 and 38. Audiodata generated by client devices 4 and 34 from the sound, may beexchanged between communication clients connected to communicationsession 26 of communication server 22. For instance, if user 4 speaks,input device 9 may receive the sound and convert it to audio data.Communication client may then send the audio data to communicationserver 22. Communication server 22 may determine communication client 6is connected to communication session 26 and further determine othercommunication clients connected to communication session 26. Upondetermining that communication clients 36A and 36B are connected tocommunication session 26, communication server 22 sends the audio datato each of communication clients 36. In still other examples, text sucha real-time instant messages or files may be exchanged betweencommunication clients 6 and 36 using similar techniques.

As shown in FIG. 1, server device 20 includes communication server 22,theme module 24, server module 25 and communication session 26. Examplesof server device 20 may include a personal computer, a laptop computer,a handheld computer, a workstation, a data storage system, asupercomputer, or a mainframe computer. Communication server 22 maygenerate, manage, and terminate communication sessions such ascommunication session 26. In some examples, communication server 22 isan application executing on server device 20 that performs operationsdescribed herein. Server device 20 may execute with multiple processors,may have functionality distributed across multiple machines, etc. Serverdevice 20 may also execute as a virtual machine executing on underlyinghardware (which itself may be a single or multiple machines). Serverdevice 20 may also execute as a process, or a set of processes, on acloud server or service.

In one example, server module 25 of communication server 22 may receivea request to generate communication session 26. For instance,communication client 6 may send a request to communication server 22that causes server module 25 to generate communication session 26. Upongenerating communication session 26, other communication clients such ascommunication clients 36 may also connect to communication session 26.For instance, user 2 may cause communication client 6 to sendinvitations to client devices 34A and 34B of users 38A and 38B. Uponreceiving the invitations, users 38A and 38B may cause communicationclients 36A and 36B to send requests to communication server 22 to joincommunication session 26. Server module 25, upon receiving the requests,may connect communication clients 36 to communication session 26. Inother examples, users 38A and 38B may discover communication session 26by browsing a feed that includes an indicator identifying communicationsession 26. Users 38 may similarly join communication session 26 bysending requests to communication server 22.

Communication session 26 may enable communication clients connected tocommunication session 26 to exchange information. As such, communicationsession as used herein is a broad term encompassing as its plain andordinary meaning, including but not limited to, one or more objects,which may be stored in and/or are executable by software or hardware,that may enable communication clients coupled to the one or more objectsto exchange information. Communication session 26 may include data that,among other things, specifies communication clients connected tocommunication session 26. Communication session 26 may further includesession information such as a duration of the communication session,security settings of the communication session, and any otherinformation that specifies a configuration of the communication session.Server module 25 may send and receive information from communicationclients connected to communication session 26 thereby enabling usersparticipating in the communication session to exchange information.Communication server 22 may also include a theme module 24 implementingtechniques of the present disclosure.

In some examples, communication client 6 may cause output device 10 todisplay GUI 12. As previously described, GUI 12 may include graphicalelements such as background 14, video feeds 17, and control buttons 16.Visual properties of GUI 12 may include the size, position, andappearance of graphical elements included in GUI 12. For instance, avisual property of video feed 17A may include a size of video feed 17A,e.g., 540×480 pixels. A different visual property of video feed 17A mayinclude a position of video feed 17A within GUI 12 specified by acoordinate pair comprising an x-axis value and a y-axis value. Othervisual properties may include chrominance and luminance effects appliedto a graphical element. Still other visual properties may include textor other objects that are superimposed on a graphical element (e.g.,text or objects that are superimposed on video feed 17A). Generally, avisual property as used herein is a broad term encompassing as its plainand ordinary meaning, including but not limited to any characteristic ofa graphical element that, when modified, results in a visuallyperceptible change in a graphical element.

Visual properties may be modified by one or more parameters. In someexamples, a parameter may identify a graphical element of a GUI andinclude data that specifies a modifier of one or more visual properties.In some examples, the parameter may identify a type of graphicalelement, such as a control button type. The type of graphical elementmay be associated with a modifier, such as a specified color to beapplied to the graphical element. In this way, a parameter may modifyone or more visual properties of multiple graphical elements of the sametype. In other examples, a parameter may identify a graphical element ofa GUI by a unique identifier of the graphical element. For instance,each control button in a GUI may include a unique identifier. Aparameter may specify an identifier that unique identifies the graphicalelement and a modifier of one or more visual properties of the visualelement. In this way, parameters, generally, may be applied to groups ofgraphical elements or individually to specific graphical elements. Whena communication client receives a parameter, the communication clientmay apply the modifier of the parameter to one or more graphicalelements in the GUI generated by the communication client. In thismanner, parameters may modify visual properties of graphical elementsincluded in the GUI.

In some examples, a theme may include a set of one or more parameters.Themes may therefore specify a configuration of one or more parametersthat modify one or more visual properties of graphical elements includedin a GUI. Themes may further include one or more triggers that specifywhen a parameter is to be applied to a graphical element. For instance,a trigger may specify that a parameter is to be applied to a graphicalelement at a particular time, day, or season. In other examples, atrigger may specify that a parameter is to be applied to a graphicalelement upon the occurrence of an event (e.g., a user joining acommunication session). A trigger, generally, may specify a conditionthat, when satisfied, indicates a parameter to be applied to a graphicalelement. In one example a condition may be satisfied when an eventmatches a condition specified by a trigger.

Themes may further include and or specify locations of graphical contentthat may be applied to one or more graphical elements. Graphical contentmay include text, images, or any other visually perceptible effect orobject. In some examples, the graphical content may be stored on aremote device, and the theme may specify the location of the graphicalcontent. For instance, a location may be specified by a Uniform ResourceLocator (URL). Thus in one example, the location of a background imagestored on a remote device may be specified by a parameter. When theparameter is applied to the GUI generated by the communication client,the background image may be retrieved from the remote device.

In some examples, themes may specify one or more groups and parametersmay be associated with each group. A group may, for example, be a groupof users. If a user is associated with a group, the parameters that areassociated with the group may be applied to the GUIs of users includedin the group that are participating in a communication session. Themesmay, in some examples, be specified as structured information in adocument such as an Extensible Markup Language (XML) document. In otherexamples, themes may be stored in a datastore such as a database orother data structure.

As shown in FIG. 1, communication server 22 may include theme module 24.In some examples, theme module 24 may receive and send theme parametersto communication clients connected to a communication session therebycausing visual properties of the GUIs displayed at each of the clientdevices to be modified concurrently. In this way, a common look and feelof the virtual communication session may be included in the GUI of eachcommunication client connected to the communication session. Forinstance, as shown in FIG. 1, communication clients 6 and 36 may beconnected to communication session 26. User 2 may provide a user inputvia input device 9 that causes communication module 8 to select a themestored on client device 4. Upon selecting the theme, communicationmodule 8 may apply the parameters of the theme to communication client 6thereby modifying visual properties of the graphical elements includedGUI 12.

Communication module 8 may further send parameters of the theme tocommunication server 22. Theme module 24 may receive the parameters andfurther send a message to server module 25 to determine thatcommunication clients 36A and 36B are connected to communication session26. Consequently, theme module 24 may send the parameters of the themeto each of client devices 34A and 34B. Upon receiving the parameters,communication clients 36A and 36B may apply the parameters to graphicalelements in GUIs generated by communication clients 36A and 36B. In thisway, a common look and feel of the virtual communication session may beincluded in the GUI of each communication client connected to thecommunication session.

In some aspects of the present disclosure, themes may be stored onand/or applied by a remote device 28. Examples of remote device 28 mayinclude a personal computer, a laptop computer, a handheld computer, aworkstation, a data storage system, a supercomputer, or a mainframecomputer. Remote device 28 may further include a remote application 30and theme data store 32. Theme data store 32 may be a database, file orany other data structure capable of storing a theme and/or parameters ofa theme as described herein.

In some examples, user 2 may use communication client 6 to send amessage to communication server 22 to select a theme stored on remotedevice 28. For instance, communication client 6 may send a message tocommunication server 22 requesting a set of themes that may be selectedby communication client 6. Theme module 24, upon receiving the request,may send a message to remote device 28 requesting a set of themesincluded in theme data store 32. Remote application 30, executing onremote device 28, may generate a set of theme identifiers that identifythe themes stored in theme data store 32. Remote application 30 may thensend the set of theme identifiers to server device 20. Theme module 24may send a message to communication client 6 that includes the set oftheme identifiers. Communication client 6, upon receiving theidentifiers may cause output device 10 to display a menu that includesthe identifiers. User 2 may provide a user input via input device 9 tocommunication client 6 to select one or more of the theme identifiersincluded in the message. Responsive to receiving the user input,communication client 6 may send a message that indicates the selectedone or more theme identifiers to communication server 22.

Theme module 24 may send a message to remote device 28 that requestsparameters of the one or more themes selected by 2. Remote application,upon receiving the message may select the parameters from theme datastore 32. Remote application 32 may then send the parameters tocommunication server 22. Theme module 24, upon receiving the parameters,may send a message to server module 25, which queries session data ofcommunication session 26, to determine that communication clients 6,36A, and 36B are connected to communication session 26. Consequently,theme module 24 sends the parameters to communication clients 6, 36A and36B. Each of communication clients 6, 36A, and 36B, upon receiving theparameters, may apply the parameters to graphical elements included inGUIs generated by each of the communications clients. In this way, aremote device 28 that specifies one or more themes may configure acommon look and feel of the configuration session 26.

In some examples, remote application 30 may manage the application ofthemes to communication clients that are connected to a communicationsession. For instance, remote device 28 may “push” parameters of a themeto an interface, such as an Application Programming Interface (API), ofcommunication server 22, which in turn may send the parameters to teachof the communication clients. In one example, user 2 may select a themestored on remote device 28 as previously described. Consequently, remotedevice 28 may send a message from communication server 22 that indicatesthe one or more themes selected by user 2. In addition, theme module 24may include a communication session identifier that uniquely identifiescommunication session 26 in the message. Upon receiving the message,remote application 30 may select the themes identified by the messageand send parameters to communication server 22. In various instances,the selected themes may include one or more triggers as furtherdescribed in the disclosure. In these instances, if the triggersincluded in the theme are later satisfied, remote application 30 maysend a message that includes the parameters associated with the triggerto communication server 22. Remote application 30 may include thesession identifier in the message such that theme module 24 may send theparameters to each communication client associated with communicationsession 26. In this way, remote application 30 may manage and apply oneor more selected themes to a communication session via an API providedby communication sever 22.

In some examples, when remote application 30 manages the application ofthemes to communication clients, communication server 22 may send eventsto remote application 30. For instance, a theme managed by remoteapplication 30 may include a trigger based on a user joining acommunication session. In such an example, theme module 24 may initiallyreceive a message from server module 25 when the new user joinscommunication session 26. Theme module 24 may send the event thatindicates the new user has joined the session to remote application 30.Remote application 30, upon receiving the event, may determine whetherthe event indicates that a trigger of the theme has occurred. If theevent indicates a trigger has occurred, remote application 30 may sendone or more parameters associated with the theme to theme module 24.Theme module 24 may, in turn, send the parameters to each of thecommunication clients connected to communication session 26. In thisway, events that occur during communication session 26, which areassociated with triggers in a theme may be sent to remote device 28.

Although previous examples herein have described themes stored on clientdevice 4 and remote device 28, themes may also be stored on server 20and applied similarly using theme module 24. For instance, remoteapplication 30 may send a theme to communication server 22. Theme module24, upon receiving the theme, may send parameters of the theme to one ormore communication clients connected to communication session 26.Moreover, theme module 24 may determine events associated triggers haveoccurred, e.g., a user joining communication session 26. Theme module 24may send parameters of themes associated with such events tocommunication clients as described similarly with respect to remoteapplication 30. In this way, a common look and feel of the configurationsession 26 may be configured by communication server 22 that stores oneor more themes.

Example Device

FIG. 2 is a block diagram illustrating further details of one example ofa server device shown in FIG. 1, in accordance with one or more aspectsof the present disclosure. FIG. 2 illustrates only one particularexample of server device 20, and many other example examples of serverdevice 20 may be used in other instances.

As shown in the specific example of FIG. 2, server device 20 includesone or more processors 40, a communication unit 44, one or more storagedevices 46, input device 48, and output device 50. Server device 20 alsoincludes an operating system 54 that is executable by server device 20.Server device 20, in one example, further includes communication server22 that is also executable by server device 20. Each of components 40,44, 46, 48, 50, 54, and 56 may be interconnected (physically,communicatively, and/or operatively) for inter-component communications.In some examples, communication channels 58 may include a system bus,network connection, interprocess communication data structure, or anyother channel for communicating data. As one example in FIG. 3,components 40, 44, 46, 48, and 50 may be coupled by one or morecommunication channels 58. Applications 56 (including communicationserver 22, theme module 24, server module 25, communication session 26)and operating system 94 may also communicate information with oneanother as well as with other components in server device 20.

Processors 40, in one example, are configured to implement functionalityand/or process instructions for execution within server device 20. Forexample, processors 40 may be capable of processing instructions storedin memory 42 or instructions stored on storage devices 46. Examples ofprocessors 40 may include, any one or more of a microprocessor, acontroller, a digital signal processor (DSP), an application specificintegrated circuit (ASIC), a field-programmable gate array (FPGA), orequivalent discrete or integrated logic circuitry.

Storage device 46, in one example, is configured to store informationwithin server device 20 during operation. Storage device 46, in someexamples, is described as a computer-readable storage medium. In someexamples, storage device 46 is a temporary memory, meaning that aprimary purpose of storage device 46 is not long-term storage. Storagedevice 46, in some examples, is described as a volatile memory, meaningthat storage device 46 does not maintain stored contents when thecomputer is turned off. Examples of volatile memories include randomaccess memories (RAM), dynamic random access memories (DRAM), staticrandom access memories (SRAM), and other forms of volatile memoriesknown in the art. In some examples, storage device 46 is used to storeprogram instructions for execution by processors 40. Storage device 46,in one example, is used by software or applications running on serverdevice 20 (e.g., applications 56) to temporarily store informationduring program execution.

Storage devices 46, in some examples, also include one or morecomputer-readable storage media. Storage devices 46 may be configured tostore larger amounts of information than memory 42. Storage devices 46may further be configured for long-term storage of information. In someexamples, storage devices 46 include non-volatile storage elements.Examples of such non-volatile storage elements include magnetic harddiscs, optical discs, floppy discs, flash memories, or forms ofelectrically programmable memories (EPROM) or electrically erasable andprogrammable (EEPROM) memories.

Server device 20, in some examples, also includes a communication unit44. Server device 20, in one example, utilizes communication unit 44 tocommunicate with external devices via one or more networks, such as oneor more wireless networks. Communication unit 44 may be a communicationunit card, such as an Ethernet card, an optical transceiver, a radiofrequency transceiver, or any other type of device that can send andreceive information. Other examples of such communication units mayinclude Bluetooth®, 3G and WiFi® radios in mobile computing devices aswell as USB. In some examples, server device 20 utilizes communicationunit 44 to wirelessly communicate with an external device such as remotedevice 28 and client devices 4 and 34 of FIG. 1, a mobile phone, orother networked computing device.

Server device 20, in one example, also includes one or more inputdevices 48. Input device 48, in some examples, is configured to receiveinput from a user through tactile, audio, or video feedback. Examples ofinput device 48 include a presence-sensitive screen, a mouse, akeyboard, a voice responsive system, video camera, microphone or anyother type of device for detecting a command from a user. In someexamples, a presence-sensitive screen includes a touch-sensitive screen.

One or more output devices 50 may also be included in server device 20.Output device 50, in some examples, is configured to provide output to auser using tactile, audio, or video stimuli. Output device 50, in oneexample, includes a presence-sensitive screen, a sound card, a videographics adapter card, or any other type of device for converting asignal into an appropriate form understandable to humans or machines.Additional examples of output device 50 include a speaker, a cathode raytube (CRT) monitor, a liquid crystal display (LCD), or any other type ofdevice that can generate intelligible output to a user.

Server device 20 may include operating system 54. Operating system 54,in some examples, controls the operation of components of server device20. For example, operating system 54, in one example, facilitates theinteraction of communication server 22 with processors 40, communicationunit 44, storage devices 46, input device 48, and output device 50. Asshown in FIG. 2, communication server 22 may include theme module 24,server module 25, and communication session 26, as described in FIG. 1.Communication server 22, theme module 24, and server module 25 may eachinclude program instructions and/or data that are executable by serverdevice 20. For example, theme module 24 and server module 25 may includeinstructions that cause communication server 22 executing on serverdevice 20 to perform one or more of the operations and actions describedin the present disclosure.

In one example, communication unit 44 may receive multiple video feedsfrom communication clients connected to communications session 26. Assuch, a video feed as used herein is a broad term encompassing as itsplain and ordinary meaning, including but not limited to one or morevisual representations associated with a communication client coupled toa communication session. For instance, a video feed may include one ormore visual representations of user participation associated with acommunication client that is coupled to a communication session. Uponreceiving the video feeds, server module 25 may determine whichcommunication clients are connected to communication session 26. Servermodule 25 may cause network device 44 to send the video feeds to each ofthe communication clients connected to communication session 26 fordisplay at the GUIs of each of the communication devices that includethe communication clients. In this way, users participating incommunication session 26 may view visual representations of other usersparticipating in the communication session.

In the current example, communication unit 44 may receive a message froma communication client that requests a set of themes that may beselected by the communication client. Theme module 24 may furthergenerate a message that includes a request for themes. Theme module 24causes communication unit 44 to send the message to a remote device,which may return a set of identifiers that identify selectable themesstored on the remote device. Theme module 24 then causes communicationunit 44 to send a message that includes the set of identifiers to thecommunication client. The user of the communication client may provide auser input to select one or more identifiers, which are in turn sent toserver device 10. Communication unit 44 may receive the selectedidentifiers, which theme module 24 may then in turn cause communicationunit 44 to send to the remote device. The remote device may then selectparameters of the themes identified by the selected identifiers. Theremote device may send the parameters to server device 10.

Theme module 24 may receive the parameters via communication unit 44.Upon receiving the parameters, theme module 24 may send a message toserver module 25 to determine which communication clients are connectedto communication session 26. Theme module 24 may receive a set ofidentifiers of communication clients from server module 25. Theme module24 may then cause communication unit 44 to send the parameters to eachof the communication clients connected to communication session 26. Theparameters, when received and applied by each of the communicationclients, may modify visual properties of GUIs displayed at each of thecomputing devices executing the communication clients.

Example Interface

FIG. 3 is a block diagram illustrating one example of a graphicaldisplay of a communication client, in accordance with one or moreaspects of the present disclosure. FIG. 3 includes GUI 12, which may bean example of GUI 12 as shown in FIG. 1. GUI 12 further includesinvitation panel 71, control panel 80, rows 76A and 76B, and video feed84. Invitation panel may further include user selection button 70 andinvitation button 72. Control panel 80 may further include themeselection button 74 and session control buttons 82. Row 76A may includevideo feed 78A and row 76B may include video feed 78B.

As shown in FIG. 3, GUI 12 may include invitation panel 71. Invitationpanel 71 may enable user 2 of FIG. 1 to invite other users to joincommunication session 26. Invitation panel 71 may include a userselection button 70 that enables user 2 to initially select other users.For instance, when users 2 selects user selection button 70,communication module 8 may cause GUI 12 to display identifiers of one ormore users or groups of users that user 2 may select for invitation tocommunication session 26. After user 2 has selected one or more users,user 2 may further select invitation button 72. In some examples, wheninvitation button 72 is selected by user 2, communication module 8 maysend invitations to the selected users.

GUI 12 may further include control panel 80. Control panel 80 mayinclude one or more session control buttons that enable user 2 tocontrol functions of communication client 6 and client device 4. Forinstance, control panel 80 may include session control buttons 82.Session control buttons 82 may be associated with various functions thatmay be performed by communications module 8. Various functions mayinclude muting a camera attached to client device 4, muting a microphoneof computing device 4, accessing user specified settings ofcommunication client 6, and/or exiting communication session 26.

Control panel 80 may include theme selection button 74 that, whenselected, enables user 2 to select a theme that may be applied to GUI12. For instance, upon selecting theme selection button 74,communication module 8 may cause GUI 12 to display menu 94 that includesa set of themes that user 2 may select. In some examples, one or more ofthe themes may be stored on client device 4, while in other examples,one or more of the themes may be stored on server device 20 or remotedevice 28. User 2 may provide a user input to select one or more of thethemes, which communication module 8 may apply to graphical elements ofGUI 12. Moreover, communication module 8 may send a message tocommunication server 22 that user 2 has selected a theme. In someexamples, the message may further include parameters of the theme.Communication server 22 may, responsive to receiving the message, sendparameters of the selected theme to other communication clientsconnected to communication session 26.

As shown in FIG. 3, a theme may specify one or more parameters thatcause communication module 8 to modify visual properties of GUI 12displayed at client device 4. In some examples, parameters may causecommunication module 8 to display video feeds in a substantiallyparallel orientation at GUI 12 such as in a row (e.g., horizontal) or acolumn (e.g., vertical). For instance, user 2 may select a theme thatspecifies a data that indicates to communication module 8 to display afirst video feed group 92A in a first row 76A and a second video feedgroup 92B in a second row 76B. In one non-limiting example, parametersmay include the following structured data that may be processed andapplied by communication module 8 to graphical elements of GUI 12. Theparameters may be included in a theme that is stored on client device 4,server device 20, and/or remote device 28.

 1 <group:group1>  2  <row>  3   <element_type:video-feed>  4  <orientation:vertical>  5   <position:left>  6   <size:thumbnail>  7 </row>  8 </group>  9 <group:group2> 10  <row> 11  <element_type:video-feed> 12   <orientation:vertical> 13  <position:right> 14   <size:thumbnail> 15  </row> 16 </group> 17<trigger:active_speaker> 18   <element_type:video-feed> 19  <position:center> 20   <size:large> 21 </trigger>

Lines 1 and 9 of the parameter specify to communication module 8 twodifferent groups identified by group names: group1, group2. Lines 2 and10 further indicate that communication module 8 will include graphicalelements of group1 and group2 in rows. For instance, as shown in FIG. 3,first group of video feeds 78A are included in row 76A and second groupof video feeds 92B are included in row 76B. Lines 3 and 11 specify thetype of graphical element, e.g., video-feed, to which communicationmodule 8 will apply the parameters. For instance, video feed 76A may bea graphical element of type video-feed. Lines 4 and 12 indicate theorientation of each of rows 76A and 76B is vertical as shown in FIG. 3.Lines 5 and 13 indicate positions of rows 76A and 76B within GUI 12. Forinstance positions may include enumerated types such as top, bottom,left, right, and center with predefined pixel values. In other examplespositions may include absolute x,y coordinates relative to an origin ofGUI 12.

Lines 6 and 14 indicate that the size of each video feed, e.g.,thumbnail. A size of each graphical element may be specified in pixeldimensions or alternatively according an enumerated type such asthumbnail, small, medium, large, which may each be associated withpredefined pixel dimensions. As shown in FIG. 3, a size of video feed 84may be larger than a size of video feeds included in video feed group92A.

In one example, communication module 8 may receive video feeds fromserver device 20. Each video feed may include a visual representation ofuser participation in communication session 26. For instance, userparticipation may include actions and/or physical appearances of theuser that may be recorded or captured by an input device. Userparticipation may also include one or more other physical objects and/oractions of the physical objects that may be recorded or captured by aninput device. For instance, user participation may be the user in thevideo, the user pointing the video at another object or event (e.g., theuser's dog, the view out the windows, etc.), a rendered scene by theuser (e.g., a shared browser window or computer desktop), etc. Usersparticipating in communication session 26 may each further be associatedwith a first group or a second group (e.g., video feed group 92A or92B). For instance, the first group may be identified by a first groupidentifier attribute and the second group may be identified by a secondgroup identifier attribute. The first group identifier attribute may bedifferent than the second group identifier attribute, in some examples.Each communication client connected to communication session 26 may sendto communication server 22 the attribute associated with the user.Communication server 22 may further associate the attribute of each userwith the user's video feed. When communication server 22 sends one ormore video feeds to communication client 6 connected to communicationsession 26, communication client 6 may determine, based on the attributeassociated with the video feed, which group the video feed is associatedwith. Communication client 6 may then apply parameters having a groupname that matches a group attribute associated with a video feed.

In other examples, communication client 6 may identify the groupattribute associated with each video feed. Based on the identity of eachgroup attribute, communication client 6 may further determine the numberof unique group attributes of video feeds received from communicationserver 22. For instance, communication client 6 may determine that eachof the video feeds received from communication server 22 is associatedwith a group attribute of customer or vendor. Consequently,communication client 6 may determine that there are two distinct groups.Because communication client 6 may determine there are two distinctgroups, communication client 6 may apply parameters of group1 to videofeeds having a group attribute of customer. Communication client 6 mayfurther apply parameters of group2 to video feeds having a groupattribute of vendor. Thus, communication client 6 may flexibly andgenerically apply parameters of a theme to video feeds associated withdifferent group attributes without requiring exact matching of groupnames of parameters to group attributes associated with video streams.

Line 17 further specifies a trigger with type active_speaker. In someexamples, communication module 8 may determine that the position andsize specified in <trigger: active_speaker> is applied to a graphicalelement of type video-feed when an event of type active_speaker isassociated with a video feed. Server module 25 may associate an event oftype active_speaker with a video feed received from a computing devicethat is sending audio data based on an audio signal provided by a userto communication session 26. For instance, server module 25 mayassociate an active_speaker event with a video stream of a user that ispresently speaking, e.g., providing an audio signal to generate audiodata, in communication session 26. Server module 25 may send the eventto communication module 8, which may determine, based the trigger ofLine 18 of the parameter, to position the video feed, e.g., video feed84, of the active speaker in the center of GUI 12 (Line 19) and displaythe video feed as a size of type large (Line 20). Thus, as shown in FIG.3, row 76A may be positioned at an opposite side of GUI 12 from the siderow 76B is positioned. Video feed 84, as shown in FIG. 3, may bepositioned between row 76A and 76B. In other examples, parameters mayindicate that each of the video feeds is of the same size and the videofeeds are displayed by output device 10 in substantially parallel rows.For instance, communication client 6 may cause four video feeds to bedisplayed in GUI 12 as a 2×2 matrix of video feeds, wherein each videofeed is of the same size and each of the row of two video feeds issubstantially parallel (e.g., horizontally) to the other.

Other examples of triggers may include a trigger that specifies acomputing device that initiated the communication session. For instance,the trigger may cause communication client 6 to display the video feedof the computing device that initiated the communication session as avideo feed having a size that is larger than other video feeds includedin the GUI.

In some examples, one or more parameters specify that a computing devicesuperimpose graphical content for display on a selected video feed ofthe plurality of video feeds at the GUI. In some examples, theparameters may indicate the graphical content is superimposed on agraphical element when server device 20 receives an event. For instance,graphical content may include an image 90 that is superimposed on avideo feed in GUI 12. In one example, image 90 is superimposed on thevideo feed when the audio data associated with the video feed has beenmuted. For instance, the user of the computing device that generates thevideo feed may provide a user input that mutes the audio data associatedwith the video feed. Upon muting the audio data, the computing devicemay send an event to communication server 22. Communication server 22may send the event to client device 4. Client module 8 may receive theevent and based on a parameter of a theme associated with the event,client module 8 may cause output device 10 to display image 90 assuperimposed on the video feed. In one example, a theme may “black out”video feeds of users when an event occurs, e.g., a first user mutes hisor her web camera or a second user provides a user input to block thevideo feed of the first user from being displayed at the second user'scomputing device.

In some examples, a parameter of a theme indicates that a computingdevice may modify at least one audio stream of a plurality of audiostreams generated by the computing devices. For instance, communicationserver 22 may send a plurality of audio streams to computing devicesconnected to communication session 26 for output at a plurality ofoutput devices of the computing devices. The audio streams may include,for example, audio data generated from audio signals provided by eachuser. In one example, a parameter of a theme stored on server device 20may specify that a volume level of an audio stream associated with thecurrent speaker is increased. In another example, a parameter mayspecify that a volume level of each audio stream associated with acomputing device of a user that is not speaking is muted.

In one example, user 38A may currently be speaking Consequently, clientdevice 34A receives the audio signal of user 38A's voice and convertsthe signal to audio data. Communication client 36A sends the audio dataas an audio stream to communication server 22. Upon receiving thestream, theme module 24 may associate an active_speaker event with theaudio stream. The active_speaker event indicates the audio stream isassociated with an audio stream of an active_speaker. Server module 25may send the audio stream and active_speaker event to each of clientdevices 4 and 38B. Communication client 6, for example, may receive theaudio stream and active_speaker event. Communication client 6 mayfurther determine that a parameter of a theme presently applied bycommunication client 6 causes communication client 6 to increase thevolume of the audio stream associated with the active_speaker event.

Example Operations

FIG. 4 is a flowchart illustrating an example operation that includes aserver device that sends parameters to the computing devices connectedto a communication session to concurrently modify visual properties ofGUIs displayed at each of the computing devices, in accordance with oneor more aspects of the present disclosure. The example operations asdescribed in FIG. 4 may be performed by client device 4, server device20, remote device 28, and client device 34B of FIG. 1. As shown in FIG.4, client device 4 may send a request to initiate a communication onserver device 20 (100). Upon receiving the request, server device 20 mayestablish a communication session and generate session data associatedwith the communication session (102). For instance, session data mayindicate that client device 4 is connected to the communication sessionand further that client device 34A is permitted to join thecommunication session. At a later time, client device 34A may join thecommunication session (104), e.g., after receiving an invitation fromclient device 4 or discovering the communication session in a feed.

The user of client device 4 may wish to change the look and feel of GUIsof each communication client executing on client devices connected tothe communication session. Consequently, user may provide a user inputthat selects a theme and causes client device 4 to send a message thatindicates the selected theme to server device 20 (106). Server device 20may subsequently receive the theme selection (108). Upon receiving thetheme selection, server device 20 may send a message, for example, aconfiguration request that indicates the selected theme to remote device28 (112). Remote device 28 as shown in FIG. 1, may store one or morethemes. Upon receiving the configuration request from server device 20,remote device 28 may select the parameters of the theme and send theparameters to server device 20 (114).

Server device 20 may subsequent receive the theme parameters (116). Uponreceiving the theme parameters, server device 20 may determine whichclient devices are connected to the communication session. Server device20, upon determining which client devices are connected to thecommunication session, may send the theme parameters to each of theconnected client devices (118). In the current example, client device 4receives the theme parameters from server device 20 (120). Client device4 may then apply the theme parameters thereby modifying visualproperties of one or more graphical elements included in the GUIgenerated by client device 4 (122). Client device 34A also receivestheme parameters from server device 20 (124). Client device 34A may thensimilarly apply the theme parameters thereby modifying visual propertiesof one or more graphical elements included in the GUI generated byclient device 34A (126).

Example Operations

FIG. 5 is a flow diagram illustrating an example operation that may beperformed by a computing device to send a set of parameters to computingdevices connected to a communication session to concurrently modifyvisual properties of GUIs displayed at each of the plurality ofcomputing devices, in accordance with one or more aspects of the presentdisclosure. The example operation illustrated in FIG. 5 may be performedby server device 20 shown in FIGS. 1 and/or 2. The operation of FIG. 5includes sending, by a computing device, a plurality of video feeds fordisplay at a plurality of graphical user interfaces (GUIs) of computingdevices connected to a communication session, wherein the communicationsession enables communication among a plurality of users, and whereineach of the plurality of video feeds includes a visual representation ofa user participating in the communication session (130). The operationof FIG. 5 also includes receiving, by the computing device, a set ofparameters of a theme to modify one or more visual properties of theGUIs (132). The operation further includes sending, by the computingdevice, the set of parameters to the computing devices connected to thecommunication session to concurrently modify visual properties of GUIsdisplaying the plurality of video feeds at each of the plurality ofcomputing devices (134).

In one example, the method includes sending, by the computing device, arequest that identifies the theme to a remote server that stores aplurality of themes; and receiving, by the computing device, the set ofparameters of the theme. In one example, the one or more visualproperties of the communication session include graphical positions ofeach of the plurality of visual feeds in the graphical user interface.In another example, the one or more visual properties of thecommunication session include graphical orientations of each of theplurality of visual feeds in the graphical user interface. In oneexample, the one or more visual properties of the communication sessioninclude sizes of each of the plurality of visual feeds in the graphicaluser interface.

In one example, the graphical user interface includes one or moregraphical elements, and wherein the one or more visual properties of thecommunication session include one or more colors of the one or moregraphical elements. In another example, one or more graphical elementsinclude at least one of a background image, text, control buttons, inputfield, or scrollbar. In one example, the set of parameters specify datathat indicates to the plurality of computing devices to display each ofthe plurality of video feeds as a first size at the GUI, and the dataindicates of parameters to the plurality of computing devices to displaythe plurality of video feeds in a substantially parallel orientation atthe GUI.

In one example, the set of parameters specify data that indicates to theplurality of computing devices to display the plurality of video feedsin a substantially parallel orientation at the GUI; the data indicatesto the plurality of computing devices to select a video feed of theplurality of video feeds, wherein the selected video feed is associatedwith a second computing device that generates audio data based on anaudio signal provided by a user; and the data indicates to the pluralityof computing devices to display at the GUI the selected video feed as afirst size and the plurality of video feeds as a second size, whereinthe first size is larger than the second size. In one example, the datafurther indicates to the plurality of computing devices to display theplurality of video feeds adjacent to a side of the GUI.

In one example, the set of parameters specify data that indicates to theplurality of computing devices to display a first group of the pluralityof video feeds in a first substantially parallel orientation at a firstlocation the GUI and a second group of the plurality of video feeds in asecond substantially parallel orientation at a second location of theGUI; the data indicates to the plurality of computing devices to selecta video feed of the plurality of video feeds, wherein the selected videofeed is associated with a second computing device that is sending audiodata based on an audio signal provided by a user to the communicationsession; the data indicates to the plurality of computing devices todisplay at the GUI the selected video feed as a first size and theplurality of video feeds as a second size, wherein the first size islarger than the second size; the data indicates to the plurality ofcomputing devices to display at the GUI the first group of the pluralityof video feeds adjacent to a first side of the GUI and the second groupof the plurality of video feeds adjacent to a second side of the GUI,wherein the first side and the second side include opposite sides of theGUI, and the data indicates to the plurality of computing devices todisplay at the GUI the selected video feed between the first group ofthe plurality of video feeds and the second group of the plurality ofvideo feeds.

In one example, the first group of the plurality of video feeds areassociated with a first attribute; the second group of the plurality ofvideo feeds are associated with a second attribute; and the firstattribute is not equal to the second attribute. In one example, thefirst attribute indicates a first group of users, wherein each user ofthe first group of users is related to users of the first group of usersand the second attribute indicates a second group of users, wherein eachuser of the second group of users is related to users of the secondgroup of users.

In one example, the set of parameters specify data that indicates to theplurality of computing devices to display the plurality of video feedsin a substantially parallel orientation at the GUI; the data indicatesto the plurality of computing devices to select a video feed of theplurality of video feeds, wherein the selected video feed is associatedwith a second computing device that initiated the communication session;and the data indicates to the plurality of computing devices to displayat the GUI the selected video feed as a first size and the plurality ofvideo feeds as a second size, wherein the first size is larger than thesecond size. In one example, the set of parameters specify data thatindicates to the plurality of computing devices to superimpose agraphical content for display on a selected video feed of the pluralityof video feeds at the GUI when an event is received by the computingdevice.

In one example, the event includes muting a microphone of one of theplurality of computing devices, and wherein the graphical elementincludes an image. In one example, the method includes detecting, by thecomputing device, an event associated with a trigger of the theme,wherein the trigger specifies data that modifies visual properties ofthe GUIs displayed the plurality of computing devices; and responsive todetecting the event, storing, by the computing device, the data in theset of parameters. In one example, the event indicates that a newcomputing device has connected to the communication session to enablecommunication between a new user of the new computing device and theplurality of users of the computing devices. In one example, a parameterof the set of parameters of the theme indicates to the plurality ofcomputing devices to modify at least one audio stream of a plurality ofaudio streams generated by the computing devices, wherein the computingdevice sends the plurality of audio streams to computing devicesconnected to the communication session for output at a plurality ofoutput devices of the computing devices.

The techniques described in this disclosure may be implemented, at leastin part, in hardware, software, firmware, or any combination thereof.For example, various aspects of the described techniques may beimplemented within one or more processors, including one or moremicroprocessors, digital signal processors (DSPs), application specificintegrated circuits (ASICs), field programmable gate arrays (FPGAs), orany other equivalent integrated or discrete logic circuitry, as well asany combinations of such components. The term “processor” or “processingcircuitry” may generally refer to any of the foregoing logic circuitry,alone or in combination with other logic circuitry, or any otherequivalent circuitry. A control unit including hardware may also performone or more of the techniques of this disclosure.

Such hardware, software, and firmware may be implemented within the samedevice or within separate devices to support the various techniquesdescribed in this disclosure. In addition, any of the described units,modules or components may be implemented together or separately asdiscrete but interoperable logic devices. Depiction of differentfeatures as modules or units is intended to highlight differentfunctional aspects and does not necessarily imply that such modules orunits must be realized by separate hardware, firmware, or softwarecomponents. Rather, functionality associated with one or more modules orunits may be performed by separate hardware, firmware, or softwarecomponents, or integrated within common or separate hardware, firmware,or software components.

The techniques described in this disclosure may also be embodied orencoded in an article of manufacture including a computer-readablestorage medium encoded with instructions. Instructions embedded orencoded in an article of manufacture including a computer-readablestorage medium encoded, may cause one or more programmable processors,or other processors, to implement one or more of the techniquesdescribed herein, such as when instructions included or encoded in thecomputer-readable storage medium are executed by the one or moreprocessors. Computer readable storage media may include random accessmemory (RAM), read only memory (ROM), programmable read only memory(PROM), erasable programmable read only memory (EPROM), electronicallyerasable programmable read only memory (EEPROM), flash memory, a harddisk, a compact disc ROM (CD-ROM), a floppy disk, a cassette, magneticmedia, optical media, or other computer readable media. In someexamples, an article of manufacture may include one or morecomputer-readable storage media.

In some examples, a computer-readable storage medium may include anon-transitory medium. The term “non-transitory” may indicate that thestorage medium is not embodied in a carrier wave or a propagated signal.In certain examples, a non-transitory storage medium may store data thatcan, over time, change (e.g., in RAM or cache).

Various examples have been described. These and other examples arewithin the scope of the following claims.

What is claimed is:
 1. A computer-implemented method comprising: inresponse to input from a source computing device associated with asource user, initiating, by a computing system having one or moreprocessors, a videoconference session; coordinating, by the computingsystem, joining of the videoconference session by a plurality ofcomputing devices associated with a plurality of users, the pluralitiesof computing devices and users including the source computing device andsource user, respectively, each computing device displaying a graphicaluser interface (GUI) for the videoconference session upon joining, eachGUI having a set of visual properties including at least a layout ofvideo windows for respective video feeds from the plurality of computingdevices; based on respective group identifier attributes, identifying,by the computing system, distinct first and second groups of theplurality of computing devices associated with first and second groupsof the plurality of users, respectively; during the videoconferencesession, detecting, by the computing system, a trigger conditionassociated with a theme for modifying at least the layout of the videowindows in the GUIs of the plurality of computing devices, wherein thelayout specified by the theme groups the video windows for the first andsecond groups of computing devices in specific areas in the GUIs; and inresponse to detecting the trigger condition, coordinating, by thecomputing system, modification of at least the layout video windows inthe GUIs at the plurality of computing devices.
 2. Thecomputer-implemented method of claim 1, further comprising: receiving,at the computing system and from the source computing device, a requestfor a list of a set of themes stored at the computing system;outputting, from the computing system to the source computing device,the list of the set of themes stored at the computing system; andreceiving, at the computing system from the source computing device, aselection from the list of the set of themes stored at the computingsystem to obtain the theme.
 3. The computer-implemented method of claim2, wherein the trigger condition includes obtaining the theme byreceiving the selection from the source computing device from the listof the set of themes stored at the computing system.
 4. Thecomputer-implemented method of claim 1, wherein the trigger conditionincludes at least one of the plurality of computing devices joining thevideoconference session.
 5. The computer-implemented method of claim 4,wherein the trigger condition includes the source computing devicejoining the videoconference session, and wherein the theme specifiesincreasing a size of a video window for a video feed from the sourcecomputing device in the GUIs at the plurality of computing devices. 6.The computer-implemented method of claim 1, wherein the triggercondition includes a predetermined time.
 7. The computer-implementedmethod of claim 1, wherein the theme further specifies modifying atleast one audio stream of the videoconference session.
 8. Thecomputer-implemented method of claim 7, further comprising: receiving,at the computing system from the plurality of computing devices, aplurality of audio feeds indicative of speech from the plurality ofusers, respectively; detecting, by the computing system, a primaryspeaker of the plurality of users based on the plurality of audio feeds;and in response to detecting the trigger condition, coordinating, by thecomputing system, augmentation of the audio feed associated with theprimary speaker.
 9. The computer-implemented method of claim 1, at leastone of a chrominance and a luminance of at least one of the plurality ofvideo feeds.
 10. The computer-implemented method of claim 1, wherein thelayout specifies arranging the video windows for the video feeds fromthe first group of the plurality of computing devices in a left columnin a left area of the GUIs, and wherein the layout specifies arrangingthe video windows for the video feeds from the second group of theplurality of computing devices in a right column in a right area of theGUIs.
 11. The computer-implemented method of claim 1, wherein the groupidentifier attributes indicate a first user type for each of the firstgroup of users, wherein the second group identifier attributes indicatea different second user type for each of the second group of users, andwherein the first and second user types are with respect to a context ofthe videoconference session.
 12. A computing system having one or moreprocessors configured to perform operations comprising: in response toinput from a source computing device associated with a source user,initiating a videoconference session; coordinating joining of thevideoconference session by a plurality of computing devices associatedwith a plurality of users, the pluralities of computing devices andusers including the source computing device and the source user,respectively, each computing device displaying a graphical userinterface (GUI) for the videoconference session upon joining, each GUIhaving a set of visual properties including at least a layout of videowindows for respective video feeds from the plurality of computingdevices; based on respective group identifier attributes, identifyingdistinct first and second groups of the plurality of computing devicesassociated with first and second groups of the plurality of users,respectively; during the videoconference session, detecting a triggercondition associated with a theme for modifying at least the layout ofthe video windows in the GUIs of the plurality of computing devices,wherein the layout specified by the theme groups the video windows forthe first and second groups of computing devices in specific areas inthe GUIs; and in response to detecting the trigger condition,coordinating modification of at least the layout video windows in theGUIs at the plurality of computing devices.
 13. The computing system ofclaim 12, further comprising: receiving, from the source computingdevice, a request for a list of a set of themes stored at the computingsystem; outputting, to the source computing device, the list of the setof themes stored at the computing system; and receiving, from the sourcecomputing device, a selection from the list of the set of themes storedat the computing system to obtain the theme.
 14. The computing system ofclaim 13, wherein the trigger condition includes obtaining the theme byreceiving the selection from the source computing device from the listof the set of themes stored at the computing system.
 15. The computingsystem of claim 12, wherein the trigger condition includes at least oneof the plurality of computing devices joining the videoconferencesession.
 16. The computing system of claim 15, wherein the triggercondition includes the source computing device joining thevideoconference session, and wherein the theme specifies increasing asize of a video window for a video feed from the source computing devicein the GUIs at the plurality of computing devices.
 17. The computingsystem of claim 12, wherein the trigger condition includes apredetermined time.
 18. The computing system of claim 12, wherein thetheme further specifies modifying at least one audio stream of thevideoconference session.
 19. The computing system of claim 18, furthercomprising: receiving, from the plurality of computing devices, aplurality of audio feeds indicative of speech from the plurality ofusers, respectively; detecting a primary speaker of the plurality ofusers based on the plurality of audio feeds; and in response todetecting the trigger condition, coordinating augmentation of the audiofeed associated with the primary speaker.
 20. The computing system ofclaim 12, wherein the set of visual properties includes at least one ofa chrominance and a luminance of at least one of the plurality of videofeeds.
 21. The computing system of claim 12, wherein the layoutspecifies arranging the video windows for the video feeds from the firstgroup of the plurality of computing devices in a left column in a leftarea of the GUIs, and wherein the layout specifies arranging the videowindows for the video feeds from the second group of the plurality ofcomputing devices in a right column in a right area of the GUIs.
 22. Thecomputing system of claim 12, wherein the group identifier attributesindicate a first user type for each of the first group of users, whereinthe second group identifier attributes indicate a different second usertype for each of the second group of users, and wherein the first andsecond user types are with respect to a context of the videoconferencesession.